草庐IT

反射简化 JDBC ResultSet

全部标签

reflection - 在 Swift 中使用反射改变属性

我正在尝试创建一个将更改对象属性的序列化程序。例子:classtestobj{varprop1:Int=3varprop2:String="Hello"varprop3:Dictionary=Dictionary()}我知道我可以使用访问属性的名称和类型reflect(testobjc())[0].1和vartester=testobj()_std_lib_DemangledTypeName(tester.prop1)但我想做的是类似vartester=testobj()for(varx:Int=0;x本质上,我想遍历为给定类列出的所有属性,并在该类的新创建对象上设置属性。任何指导将不

swift - 使用反射在纯 Swift 中使用属性的字符串名称获取属性的值

我想使用Swift(不是Objective-C运行时)反射来创建这样的方法:funcvalueFor(property:String,ofobject:Any)->Any?{...}在某种程度上,我可以使用:funcvalueFor(property:String,ofobject:Any)->Any?{letmirror=Mirror(reflecting:object)returnmirror.descendant(property)}与classTestMe{varx:Int!}lett=TestMe()t.x=100letresult=valueFor(property:"x"

ios - 如何在 Swift 中简化几乎相等的枚举扩展

我有大约20个枚举的扩展,如下所示:extensionCurrencyValue:JSONDecodable{staticfunccreate(rawValue:String)->CurrencyValue{ifletvalue=CurrencyValue(rawValue:rawValue){returnvalue}return.unknown}staticfuncdecode(j:JSONValue)->CurrencyValue?{returnCurrencyValue.createj.value()}}extensionStatusValue:JSONDecodable{sta

java - 如何使用 Java 8 功能简化重试代码块

在我的代码中,我有一个部分尝试连接到某个外部接口(interface),如果失败,那么它将重试固定次数。该代码有效,但有点难看。我想知道这是否可以使用一些奇特的Java8功能以更优雅的方式完成?intcount=0;finalintmaxRetries=3;while(count=maxRetries){LOG.debug("dosomethingelse...");//dosomethingelse}}} 最佳答案 您可以做的是分离出重试逻辑。您需要一些辅助脚手架:interfaceThrowingTask{voidrun()th

java - 使用反射获取Java数组中的字段 "length"

classTest{publicstaticvoidmain(String[]args)throwsException{Testt=newTest();System.out.println(t.field);System.out.println(t.getClass().getField("field").get(t));int[]ar=newint[23];System.out.println(ar.length);System.out.println(ar.getClass().getField("length").get(ar));}publicintfield=10;};当我运

java - 如果 Java 中的反射减慢了命令的执行速度,为什么还有那么多框架使用它?

据我了解,使用Java反射API会减慢命令的代码执行速度。但后来我看到它被用在Java世界的很多地方。仅举几例:注释Spring框架(AOP)hibernateMyBatis这意味着我错过了一些关于Java反射(又名优化技术)的事实。任何指针? 最佳答案 要点:因为他们别无选择。Java不是动态语言,因此这些框架提供服务的唯一方式是通过反射。其次,请注意这些框架所做的大部分反射工作只在初始化期间发生一次,因此运行时性能不会受到影响。关于反射的表现我注意到有一个区别一直被混淆:成员的反射查找;反射成员访问(调用/读/写)。1号很慢(这

java - 如何使用java反射获取类型参数值?

interfaceFoo{...}classBarimplementsFoo{...}我有一个Bar对象。如何为它(Baz)获取T的值?到目前为止,我只设法获取了接口(interface)和T,但我看不到获取其值的方法。提前致谢。 最佳答案 Typetype=bar.getClass().getGenericInterfaces()[0];if(typeinstanceofParameterizedType){TypeactualType=((ParameterizedType)type).getActualTypeArgument

Java反射运行时性能

这是一个学术练习(免责声明)。我正在构建一个应用程序,它将从尽可能快中获利,因为它将与其他应用程序竞争。我知道与标准声明相比,使用反射声明一个类(下面的示例)会遭受巨大的损失。ClassmDefinition=Class.forName("MySpecialClassString");ConstructormConstructor=mDefinition.getConstructor(newClass[]{MySpecialClass.class});myClass=(MySpecialClass)mConstructor.newInstance(this);但是,在声明myClass

java - Java反射有通用的 "back-end"库吗

我目前正在使用一种用Java实现的专门的解释性编程语言。作为该语言的一小部分,我想添加调用Java的能力。在我深入探讨反射的所有细节之前,我想知道是否有人知道用于执行反射式调用Java代码的“后端”部分的通用库。也就是说,我将一个字符串(我定义了语法)解析为一些表示Java方法调用(或构造函数或字段访问)的数据结构,然后将该数据结构传递给调用该调用并返回结果。特别是,我希望它能够处理所有我不想弄清楚的边缘情况:根据参数类型自动选择正确的方法(如智能Class.getDeclaredMethod())处理数组和普通对象引用之间的区别等等我花了一些时间研究动态语言在JVM上的实现,但这些通

java - 模拟基于反射的调用

我正在尝试模拟一些基于反射的方法。您可以在下面看到详细信息,被测类publicclassTracerLog{@AroundInvokepublicObjectlogCall(InvocationContextcontext)throwsException{Loggerlogger=newLogger();Stringmessage="INFO:Invokingmethod-"+context.getMethod().getName()+"()ofClass-"+context.getMethod().getDeclaringClass();logger.write(message);r